package obecto.transition
{
	import obecto.task.IInterruptibleTask;

	public interface ITransition extends IInterruptibleTask
	{
		function get autoReverse() : Boolean;
		function set autoReverse(value : Boolean) : void;
		
		/**
		 * This property can be configured in several ways:
		 * <ul>
		 * <li>as a String with the name of the State or the symbol *</li>
		 * <li>as a reference to the instance of the State</li>
		 * <li>as an Array of Strings</li>
		 * <li>as an Array of States</li>
		 * <li>as an Array with a mixture of Strings and States</li>
		 * </ul>
		 */ 
		function get fromState() : Object;
		function set fromState(value : Object) : void;
		
		/**
		 * This property can be configured in several ways:
		 * <ul>
		 * <li>as a String with the name of the State or the symbol *</li>
		 * <li>as a reference to the instance of the State</li>
		 * <li>as an Array of Strings</li>
		 * <li>as an Array of States</li>
		 * <li>as an Array with a mixture of Strings and States</li>
		 * </ul>
		 */
		function get toState() : Object;
		function set toState(value : Object) : void;
		
		function get interruptionPolicy() : TransitionInterruptionPolicy;
		function set interruptionPolicy(value : TransitionInterruptionPolicy) : void;
		
		/**
		 * Represents the State from which the transition have started.
		 * This property is usually set by the TransitionManager. Don't set it manually!
		 */ 
		function get transitingFrom() : State;
		function set transitingFrom(value : State) : void;
		
		/**
		 * Represents the State to which the transition is heading to.
		 * This property is usually set by the TransitionManager. Don't set it manually!
		 */ 
		function get transitingTo() : State;
		function set transitingTo(value : State) : void;
		
	}
}